﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace EasyTrader.Form
{
    public partial class CallPutSquareOccSysSetFrm : System.Windows.Forms.Form
    {
        public CallPutSquareOccSysSetFrm()
        {
            InitializeComponent();
            InitControl();
        }

        private void InitControl()
        {
            comboFirstSig.SelectedIndex = CallPutSquareOccSysVar.FirstSignalType;

            int selectedIndex = comboLossMargin.FindString(CallPutSquareOccSysVar.LossMargin.ToString());
            comboLossMargin.SelectedIndex = selectedIndex;

            selectedIndex = comboLossStopAll.FindString(CallPutSquareOccSysVar.PerLossLiquidValue.ToString());
            comboLossStopAll.SelectedIndex = selectedIndex;

            selectedIndex = comboMinSquareOccDelta.FindString(CallPutSquareOccSysVar.MinSquareOccDelta.ToString());
            comboMinSquareOccDelta.SelectedIndex = selectedIndex;

            selectedIndex = comboProfitStopAll.FindString(CallPutSquareOccSysVar.PerProfitLiquidValue.ToString());
            comboProfitStopAll.SelectedIndex = selectedIndex;


            comboSysStartHour.SelectedIndex = CallPutSquareOccSysVar.SysStartHour;
            comboSysStartMin.SelectedIndex = CallPutSquareOccSysVar.SysStartMin;
            comboSysEndHour.SelectedIndex = CallPutSquareOccSysVar.SysEndHour;
            comboSysEndMin.SelectedIndex = CallPutSquareOccSysVar.SysEndMin;
            comboOrderStartHour.SelectedIndex = CallPutSquareOccSysVar.OrderStartHour;
            comboOrderStartMin.SelectedIndex = CallPutSquareOccSysVar.OrderStartMin;
            comboOrderEndHour.SelectedIndex = CallPutSquareOccSysVar.OrderEndHour;
            comboOrderEndMin.SelectedIndex = CallPutSquareOccSysVar.OrderEndMin;
            comboOrderStartSignal.SelectedIndex = CallPutSquareOccSysVar.SysStartState;
            comboOrderEndSignal.SelectedIndex = CallPutSquareOccSysVar.SysEndState;

            tbPerOrderAmount.Text = CallPutSquareOccSysVar.PerOrderAmount.ToString();


            if (CallPutSquareOccSysVar.EnablePerLossLiquid == true)
            {
                cbPerLossLiquidApply.Checked = true;
            }
            else
            {
                cbPerLossLiquidApply.Checked = false;
            }

            if (CallPutSquareOccSysVar.EnablePerProfitLiquid == true)
            {
                cbPerProfitLiquidApply.Checked = true;
            }
            else
            {
                cbPerProfitLiquidApply.Checked = false;
            }

            if (CallPutSquareOccSysVar.EnterByClose == true)
            {
                cbEnterByClose.Checked = true;
            }
            else
            {
                cbEnterByClose.Checked = false;
            }

            if (CallPutSquareOccSysVar.LiquidByClose == true)
            {
                cbLiquidByClose.Checked = true;
            }
            else
            {
                cbLiquidByClose.Checked = false;
            }
        }

        private void comboFirstSig_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboFirstSig.SelectedIndex;
            if (selectedIndex == -1)
                return;
            CallPutSquareOccSysVar.FirstSignalType = Convert.ToInt32(selectedIndex);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("FirstSignalType", CallPutSquareOccSysVar.FirstSignalType.ToString());
        }


        private void comboLossMargin_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboLossMargin.SelectedItem.ToString();
            if (selText == "")
                return;
            CallPutSquareOccSysVar.LossMargin = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LossMargin", CallPutSquareOccSysVar.LossMargin.ToString());
        }

        private void comboSysStartHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboSysStartHour.SelectedIndex;

            CallPutSquareOccSysVar.SysStartHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("SysStartHour", CallPutSquareOccSysVar.SysStartHour.ToString());
        }

        private void comboSysStartMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboSysStartMin.SelectedIndex;

            CallPutSquareOccSysVar.SysStartMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("SysStartMin", CallPutSquareOccSysVar.SysStartMin.ToString());
        }

        private void comboSysEndHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboSysEndHour.SelectedIndex;

            CallPutSquareOccSysVar.SysEndHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("SysEndHour", CallPutSquareOccSysVar.SysEndHour.ToString());
        }

        private void comboSysEndMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboSysEndMin.SelectedIndex;

            CallPutSquareOccSysVar.SysEndMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("SysEndMin", CallPutSquareOccSysVar.SysEndMin.ToString());
        }

        private void comboOrderStartHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartHour.SelectedIndex;

            CallPutSquareOccSysVar.OrderStartHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartHour", CallPutSquareOccSysVar.OrderStartHour.ToString());
        }

        private void comboOrderStartMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartMin.SelectedIndex;

            CallPutSquareOccSysVar.OrderStartMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartMin", CallPutSquareOccSysVar.OrderStartMin.ToString());
        }

        private void comboOrderEndHour_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndHour.SelectedIndex;

            CallPutSquareOccSysVar.OrderEndHour = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndHour", CallPutSquareOccSysVar.OrderEndHour.ToString());
        }

        private void comboOrderEndMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndMin.SelectedIndex;

            CallPutSquareOccSysVar.OrderEndMin = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndMin", CallPutSquareOccSysVar.OrderEndMin.ToString());
        }

        private void comboOrderStartSignal_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderStartSignal.SelectedIndex;

            CallPutSquareOccSysVar.SysStartState = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderStartSignal", CallPutSquareOccSysVar.SysStartState.ToString());
        }

        private void comboOrderEndSignal_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = comboOrderEndSignal.SelectedIndex;

            CallPutSquareOccSysVar.SysEndState = selectedIndex;

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("OrderEndSignal", CallPutSquareOccSysVar.SysEndState.ToString());
        }

        private void cbPerLossLiquidApply_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbPerLossLiquidApply.Checked == true)
            {
                selText = "True";
                CallPutSquareOccSysVar.EnablePerLossLiquid = true;
            }
            else
            {
                selText = "False";
                CallPutSquareOccSysVar.EnablePerLossLiquid = false;
            }


            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("EnableLossLiquid", selText);
        }

        private void cbPerProfitLiquidApply_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbPerProfitLiquidApply.Checked == true)
            {
                selText = "True";
                CallPutSquareOccSysVar.EnablePerProfitLiquid = true;
            }
            else
            {
                selText = "False";
                CallPutSquareOccSysVar.EnablePerProfitLiquid = false;
            }


            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("EnableProfitLiquid", selText);
        }

        private void comboLossStopAll_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboLossStopAll.SelectedItem.ToString();
            if (selText == "")
                return;
            CallPutSquareOccSysVar.PerLossLiquidValue = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LossLiquidValue", CallPutSquareOccSysVar.PerLossLiquidValue.ToString());
        }

        private void comboProfitStopAll_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboProfitStopAll.SelectedItem.ToString();
            if (selText == "")
                return;
            CallPutSquareOccSysVar.PerProfitLiquidValue = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("ProfitLiquidValue", CallPutSquareOccSysVar.PerProfitLiquidValue.ToString());
        }

        private void btnSetFirstSignal_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.Form frmchild = new EasyTrader.Form.FirstSigSetFrm();
            frmchild.Show();
        }

        private void tbPerOrderAmount_TextChanged(object sender, EventArgs e)
        {
            string selText = tbPerOrderAmount.Text;
            if (selText == "")
                return;
            CallPutSquareOccSysVar.PerOrderAmount = Convert.ToInt32(selText);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("PerOrderAmount", CallPutSquareOccSysVar.PerOrderAmount.ToString());
        }

        private void comboMinSquareOccDelta_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selText = comboMinSquareOccDelta.SelectedItem.ToString();
            if (selText == "")
                return;
            CallPutSquareOccSysVar.MinSquareOccDelta = Convert.ToDouble(selText);

            string regSubkey = "Software\\EasyTrader\\CallPutSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("MinSquareOccDelta", CallPutSquareOccSysVar.MinSquareOccDelta.ToString());
        }

        private void cbEnterByClose_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbEnterByClose.Checked == true)
            {
                selText = "True";
                CallPutSquareOccSysVar.EnterByClose = true;
            }
            else
            {
                selText = "False";
                CallPutSquareOccSysVar.EnterByClose = false;
            }


            string regSubkey = "Software\\EasyTrader\\HogaJisuSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("EnterByClose", selText);
        }

        private void cbLiquidByClose_CheckedChanged(object sender, EventArgs e)
        {
            string selText = "";
            if (cbLiquidByClose.Checked == true)
            {
                selText = "True";
                CallPutSquareOccSysVar.LiquidByClose = true;
            }
            else
            {
                selText = "False";
                CallPutSquareOccSysVar.LiquidByClose = false;
            }


            string regSubkey = "Software\\EasyTrader\\HogaJisuSys";
            // 서브키를 얻어온다. 없으면 null
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(regSubkey, true);
            // 없으면 서브키를 만든다.
            if (rk == null)
            {
                // 해당이름으로 서브키 생성
                rk = Registry.CurrentUser.CreateSubKey(regSubkey);
            }

            // 서브키 아래 값 쓰기
            rk.SetValue("LiquidByClose", selText);
        }
    }
}
